[IA64] memmap: save/restore implemented
authorAlex Williamson <alex.williamson@hp.com>
Thu, 24 May 2007 21:48:31 +0000 (15:48 -0600)
committerAlex Williamson <alex.williamson@hp.com>
Thu, 24 May 2007 21:48:31 +0000 (15:48 -0600)
Implemented XENMEM_maximum_gpfn for domain save/restore with domain memmap.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c
xen/arch/ia64/xen/mm.c
xen/include/asm-ia64/mm.h

index 2e92b54917a8813c3b134683f196c7735a72bf25..daacf80e8e7230830c5c7ab4f9747844dc3e9520 100644 (file)
@@ -430,6 +430,21 @@ xencomm_privcmd_memory_op(privcmd_hypercall_t *hypercall)
 
                return ret;
        }
+       case XENMEM_maximum_gpfn:
+       {
+               domid_t kern_domid;
+               domid_t __user *user_domid;
+               struct xencomm_handle *desc;
+
+               user_domid = (domid_t __user *)hypercall->arg[1];
+               if (copy_from_user(&kern_domid, user_domid, sizeof(domid_t)))
+                       return -EFAULT;
+               desc = xencomm_create_inline(&kern_domid);
+
+               ret = xencomm_arch_hypercall_memory_op(cmd, desc);
+
+               return ret;
+       }
        case XENMEM_translate_gpfn_list:
        {
                xen_translate_gpfn_list_t kern_op;
index 329614595b0edb2d7d1d2dcde250e0fda25dbe7a..45f15f9c468aa968328eee79a3613eae6d6770c1 100644 (file)
@@ -370,6 +370,12 @@ mm_final_teardown(struct domain* d)
     mm_p2m_teardown(d);
 }
 
+unsigned long
+domain_get_maximum_gpfn(struct domain *d)
+{
+    return (d->arch.convmem_end + PAGE_SIZE - 1) >> PAGE_SHIFT;
+}
+
 // stolen from share_xen_page_with_guest() in xen/arch/x86/mm.c
 void
 share_xen_page_with_guest(struct page_info *page,
index d3348d480607d232e85b367a044fc37278a06763..e3636db2f4cebbfc790b2804127e411df5dae93e 100644 (file)
@@ -506,6 +506,6 @@ int steal_page(
 
 #define domain_clamp_alloc_bitsize(d, b) (b)
 
-#define domain_get_maximum_gpfn(d) (-ENOSYS)
+unsigned long domain_get_maximum_gpfn(struct domain *d);
 
 #endif /* __ASM_IA64_MM_H__ */